package com.ruoyi.common.utils;

import java.math.BigDecimal;
import java.math.RoundingMode;

public class BigDecimalUtils {

    public BigDecimalUtils() {
    }

    public static BigDecimal add(String v1, String v2) {
        BigDecimal b1 = new BigDecimal(v1);
        BigDecimal b2 = new BigDecimal(v2);
        return b1.add(b2);
    }

    public static BigDecimal sub(String v1, String v2) {
        BigDecimal b1 = new BigDecimal(v1);
        BigDecimal b2 = new BigDecimal(v2);
        return b1.subtract(b2);
    }

    public static BigDecimal mul(String v1, String v2) {
        BigDecimal b1 = new BigDecimal(v1);
        BigDecimal b2 = new BigDecimal(v2);
        return b1.multiply(b2);
    }

    public static BigDecimal div(String v1, String v2, int scale) {
        BigDecimal b1 = new BigDecimal(v1);
        BigDecimal b2 = new BigDecimal(v2);
        return b1.divide(b2, scale, RoundingMode.HALF_UP);
    }

    public static BigDecimal div(String v1, String v2) {
        BigDecimal b1 = new BigDecimal(v1);
        BigDecimal b2 = new BigDecimal(v2);
        return b1.divide(b2);
    }

    public static int compareTo(String v1, String v2) {
        BigDecimal b1 = new BigDecimal(v1);
        BigDecimal b2 = new BigDecimal(v2);
        return b1.compareTo(b2);
    }

    /**
     * 百分比转数值
     * 用于存储数值
     *
     * @param data
     * @return
     */
    public static String percentToValue(String data) {
        return !StringUtils.isEmpty(data) ? BigDecimalUtils.div(data, "100", 4).toString() : "";
    }

    /**
     * 数值转百分比
     * 用于展示百分比表示
     *
     * @param data
     * @return
     */
    public static String valueToPercent(String data) {
        return !StringUtils.isEmpty(data) ? BigDecimalUtils.mul(data, "100").setScale(2, RoundingMode.HALF_UP).toString() : "";
    }
}
